package design.a2_builder;

import design.a2_builder.product.Computer;
import design.a2_builder.worker.BuilderOneStage;
import design.a2_builder.worker.BuilderTwoStage;
import design.a2_builder.worker.Director;

/**
 * 建造者模式
 * <p>
 * 建造者模式主要解决的问题是在软件系统中，有时候⾯临着"⼀个复杂对象"的创建⼯作，其通常由各个
 * 部分的⼦对象⽤⼀定的过程构成；由于需求的变化，这个复杂对象的各个部分经常⾯临着᯿⼤的变化，
 * 但是将它们组合在⼀起的过程却相对稳定
 */
public class BuilderTest {

	public static void main(String[] args) {
		Director d1 = new Director(new BuilderOneStage());
		Computer computer1 = d1.construct();
		computer1.show();

		Director d2 = new Director(new BuilderTwoStage());
		Computer computer2 = d2.construct();
		computer2.show();
	}

}
